package com.chem.search.esRepository;

import com.chem.search.entity.ShortPage;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @author 权哥
 * @version 1.0
 * @date 2023/9/14 21:42
 */
@Component
public interface ESShortPageRepository extends ElasticsearchRepository<ShortPage,String> {

    /**
     * - 'match' 表示进行全文检索。
     * - 'field' 是要进行检索的字段名。
     * - 'query' 是要查询的字符串，'?0'表示方法参数中的第一个参数，即方法的参数'field'。
     * - 'fuzziness' 是模糊查询的一个参数，'AUTO'表示自动根据字段的长度来决定模糊度。
     *
     * 这个方法的作用是在'MemProductSearch'索引中，根据传入的'field'参数，进行模糊查询，
     * @param field
     * @return
     */
    @Query("{\"match\": {\"content\": {\"query\": \"?0\", \"fuzziness\": \"AUTO\"}}}")
    Page<ShortPage> findByField_match(String field, Pageable pageable);

    /**
     * 精确查询 term
     *
     * @param
     * @param pageable
     * @return
     */
    @Query("{\"bool\": {\"must\": {\"term\": {\"type\": \"?0\"}}}}")
    Page<ShortPage> findByField_term(String content, Pageable pageable);

    Page<ShortPage> findByContentEqualsAndFlag(String type, String flag,Pageable pageable);


}
